/**
 * 
 * @authors Gary
 * @date    2016-08-29 01:54:24
 * @version $Id$
 * 
 * 一个项目的公共变量，常量，非该项目前端页面跳转链接
 * 以及http请求接口
 * 
 * 
 */

;(function(root,factory){

	if(typeof exports === 'object' && typeof module === 'object'){
    
    module.exports = factory(exports);

  } else if (typeof define === 'function' && define.amd) {
    // AMD. Register as an anonymous module.
    define(['exports'], factory);
  } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
    // CommonJS
    factory(exports);
  } else {
    // Browser globals
    root.conf = factory({});
  }

})(typeof window !== 'undefined' ? window : this ,function(exports, undefined){
  'use strict';
  
  function Config() {
    this._conf = {};
    merge(this._conf, this.constructor.conf);
  }

  Config.conf = {

    root : 'http://piao.pandauu.com/',
    apiRoot : 'http://piao.pandauu.com/',
    //qRoot : 'http://localhost:8080/',
    qRoot : 'http://test.pandauu.com/',
    qApiRoot : 'http://test.pandauu.com/',
    pRoot : 'http://piao.pandauu.com/',
    pApiRoot : 'http://piao.pandauu.com/',
    dSize : 750,
    img : '/imgs',
    static : 'single/kf/html/',
    /*
      微信登录
    */
    wxLoginUrl : 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx0d9fa3b656a43ca1&redirect_uri=http%3A%2F%2Ftest.pandauu.com%2Fwx_user_info.php&response_type=code&scope=snsapi_userinfo&state=index#wechat_redirect',
    /*
      微信反馈
    */
    wxFeedback : 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxfe002090e7dcbd3c&redirect_uri=http%3A%2F%2Fpiao.pandauu.com%2Fwx_user_info.php&response_type=code&scope=snsapi_base&state=feedback#wechat_redirect',
    apiPre : {
      one : 'kf/', //班车
      //two : 'ci.php/', //特线
    },

    /*
      http请求接口
    */

    api : {
      /*
        数据请求完整的api链接为：
          apiRoot + apiPre + api
      */
      upload : 'upload',    // 上传图片/*imageFile : 文件*/
      /*
        type ：1--文本， 2---图片
        content　：　STRING　消息内容
      */
      sendToKf : 'send-to-kf', // 客户端发送消息
      sendToUser : 'send-to-user', // 客服端发送消息
      createThread : 'create-thread', // 创建会话
      /*
        thread_id=3 --- get
      */
      sseUser : 'sse-user', // 客服端获取消息
      /*
        sse-kf

          thread_id --- get
      */
      msgList : 'msg-list', // 消息列表
      /*
        sse-kf

          thread_id --- get
      */
      sseKf : 'sse-kf', // 客户端获取消息
      /*
        thread-list

        
      */
      threadList : 'thread-list', // 会话列表
      /*
        thread
        
          thread_id --- get 
      */
      thread : 'thread', // 获取订单tags-remarks
      /*
        quick-reply-list
        
          get 
      */
      quickReplyList : 'quick-reply-list', // 获取订单
      /*
        tags-remarks
        
         thread-id  get 
      */
      tagsRemarks : 'tags-remarks', // 获取标签备注
      /*
        login

        post
        
         username 
         password
         type {
          1 --- 重新绑定
          0 -- 正常登录
         } 
      */
      login : 'login', // 登录
      /*
        is-bind
        
        get
        
      */
      isBind : 'is-bind', // 判断是否绑定
      /*
        tag-list
        
        get
         thread-id
      */
      tagList : 'tag-list', // 标签列表
      /*
        add-tag
        
        POST
         thread_id
         tag_id
      */
      addTag : 'add-tag', // 添加标签
      /*
        add-memo
        
        POST
         thread_id
         tag_id
      */
      addMemo : 'add-memo', // 添加备注
      /*
        logout
        
        get

      */
      offline : 'offline', // 客服下线
      /*
        user-logout
        
        get
        
      */
      userLogout : 'user-logout', // 用户退出
      /*
        online
        
        get
        
      */
      online : 'online', // 客服在线
      /*
        logout-thread
        
        get
        
      */
      logoutThread : 'logout-thread', // 客服退出会话
    }
  };

  /*
    扩展_conf的函数
  */
  Config.prototype.extend = function (obj) {
    var target = this._conf;
    setThrow(arguments, 1, '只能传递一个参数！');

    for ( var k in obj ) {
      if (k === 'apiPre' ||  k=== 'api') {
        for(var m in obj[k]){
          target[k][m] = obj[k][m];
        }
      }else{
        target[k] = obj[k];
      }
    }

  };
  /*
    扩展http请求API前缀函数
  */

  Config.prototype.extendApiPre = function (obj) {
    var target = this._conf.apiPre;
    setThrow(arguments, 1, '只能传递一个参数！');

    merge(target, obj);

  };
  /*
    扩展http请求API函数
  */

  Config.prototype.extendApi = function (obj) {
    var target = this._conf.api;
    setThrow(arguments, 1, '只能传递一个参数！');

    merge(target, obj);

  };
  /*
    开发和测试环境切换
  */

  Config.prototype.switchPQ = function (toggle) {

    if (!toggle) {
      this._conf.root = this._conf.qRoot;
      this._conf.apiRoot = this._conf.qApiRoot;
    }else{
      this._conf.root = this._conf.pRoot;
      this._conf.apiRoot = this._conf.pApiRoot;
    }

  };
  /*
    根据数组长度报错
  */

  function setThrow(array, lenght, msg){
    msg = msg?msg:'error';
    if (array.lenght >lenght) {
      throw (msg);
    }
  }
  /*
    内部两个对象合并函数
  */
  function merge(target, obj){
    for ( var k in obj ) {
      target[k] = obj[k];
    }
  }
  var conf = new Config();
  conf.switchPQ(true);
  return conf;
});